Near continuous access to data files on enterprise storage arrays is always desired. In a cluster environment, one or more nodes is capable of accessing a storage array through one or more paths. Load balancing of input/output messages (I/Os) across local paths is performed at each node. That is, traditionally, multi-pathing operations are performed at a node to perform load balancing across local paths providing connectivity between the individual node and the storage system.
Load balancing across all nodes opens up more options for delivering I/Os throughout a cluster, but it offers more challenges. For instance, cluster wide load balancing may be performed at the storage array itself. That is, the load is balanced across the array controllers used for accessing the storage array, such as, when the array is in an active/active configuration. However, this may not serve as the best place to perform cluster-wide load balancing as the storage array does not serve as application host, and as such, it is difficult to solve the affinity/configuration asymmetry between different application at the storage array layer.
Performing load balancing only at a local node level of a cluster leads to an underperforming cluster used for accessing a storage system.